package com.dz.tool.Service;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;

public interface MysqlServer {

    ///////////////////////////////////////////////////////////////////////////
    // mysql 针对数据库 生成字段Excel文档
    ///////////////////////////////////////////////////////////////////////////
    void MysqlToExcel(HttpServletResponse response, List<String> tableNames);

    ///////////////////////////////////////////////////////////////////////////
    // Mysql 转 Mysql
    // todo 通过建表语句迁移数据库
    // mysqldump --column-statistics=0 -h114.115.148.66 -P30906 -uroot -prd123456, reserve-demo > cmdb.sql
    ///////////////////////////////////////////////////////////////////////////
    void MysqlToMysql(List<String> tableList,boolean dataBool) throws Exception;

    ///////////////////////////////////////////////////////////////////////////
    // Mysql 转 Oracle
    ///////////////////////////////////////////////////////////////////////////
    void MysqlToOracle();

    ///////////////////////////////////////////////////////////////////////////
    // Mysql 数据表对比
    // 用途：系统开发期间，多个环境，数据库有可能加字段了，但是你不知道具体加了什么，用这个脚本同步一下字段
    ///////////////////////////////////////////////////////////////////////////
    void MysqlToField(List<String> MysqlTableList) throws IOException;

    ///////////////////////////////////////////////////////////////////////////
    // Mysql 根据提供的sql迁移到指定数据表
    // todo sqlPor 需要执行的具体sql语句，但是得加一个东西，举例 select 字段A,字段B UNION ALL select A,B from 表名 where 条件 查询前面手动加一行标题数据，用来确认字段对标
    // todo tableName 目标表名
    ///////////////////////////////////////////////////////////////////////////
    void MysqlToSqlTOTable(String sql,String tableName);

    ///////////////////////////////////////////////////////////////////////////
    // Mysql 批量执行存过
    ///////////////////////////////////////////////////////////////////////////
    void MysqlToSaved(String savedName,int type,String years);

    ///////////////////////////////////////////////////////////////////////////
    // Mysql 根据驼峰数据集合，对比指定表字段，看对应的注释
    ///////////////////////////////////////////////////////////////////////////
    void MysqlToFieldComment(Map<String,String> tableFieldMap);

}
